package com.orhon.smartcampus.modules.baseinfo.mutation;

import com.alibaba.fastjson.JSON;
import com.orhon.smartcampus.basicComponents.Result;
import com.orhon.smartcampus.modules.baseinfo.dao.SemesterDao;
import com.orhon.smartcampus.modules.baseinfo.dao.TimetableDao;
import com.orhon.smartcampus.modules.baseinfo.dao.TimetableItemDao;
import com.orhon.smartcampus.modules.baseinfo.entity.Semester;
import com.orhon.smartcampus.modules.baseinfo.entity.Timetable;
import com.orhon.smartcampus.modules.baseinfo.entity.TimetableItem;
import com.orhon.smartcampus.modules.baseinfo.gqlInputModel.GQLTimetableItemInput;
import com.orhon.smartcampus.modules.baseinfo.inputMapper.TimetableItemInputMapper;
import graphql.schema.DataFetcher;
import graphql.schema.DataFetchingEnvironment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.Date;

@Component
public class AddTimetableItemMutation implements DataFetcher {


    @Autowired
    TimetableItemDao timetableItemDao;

    @Autowired
    TimetableDao timetableDao;

    /**
     * 添加作息项
     * editor : ths
     */
    @Override
    public Object get(DataFetchingEnvironment environment) throws Exception {

        GQLTimetableItemInput input = TimetableItemInputMapper.MAPPER.mapInput(environment.getArgument("inputData"));

        TimetableItem timetableItem = null;

        if (input.getId() != null) {
            timetableItem = timetableItemDao.get(TimetableItem.class, input.getId());
            timetableItem.setUpdatedAt(new Date());
        } else {
            timetableItem = new TimetableItem();
            timetableItem.setCreatedAt(new Date());
        }

        if (input.getTimetable_id() != null) {
            timetableItem.setBaseinfoTimetableByTimetableId(timetableDao.get(Timetable.class, input.getTimetable_id()));
        }
        if(input.getStat_time() != null){

            timetableItem.setStartTime(input.getStat_time());
        }
        if(input.getEnd_time() != null){

            timetableItem.setEndTime(input.getEnd_time());
        }
        if(input.getWeeks() != null){

            timetableItem.setWeeks(JSON.toJSONString(input.getWeeks()));
        }
        if(input.getName() != null){

            timetableItem.setName(JSON.toJSONString(input.getName()));
        }
        if(input.getType() != null){

            timetableItem.setType(input.getType());
        }
        if(input.getIs_classtime() != null){

            timetableItem.setIsClasstime(input.getIs_classtime());
        }
        try {
            timetableItemDao.saveOrUpdate(timetableItem);
        } catch (Exception e) {
            return Result.error(500, "" + e);
        }
        return Result.ok();
    }
}

